Most decimal division methods are based on a straight-forward iterative approach which use common fixed point dataflow elements including a decimal adder. The most significant digits of the divisor are aligned to the most significant digits of the dividend before processing begins. Significant digits may or may not include leading zeros. A quotient digit determining loop begins by subtracting the aligned divisor from the dividend. If the subtraction result is positive further subtractions of the aligned divisor are made. The quotient digit is determined by counting the number of subtraction results that are positive. When a subtraction result goes negative the divsor has been subtracted once too many times. In the restorative method the aligned divisor is added back to generate the partial remainder. The divisor is shifted one decimal digit to the right and the next quotient digit determining loop is begun.
In a non-restorative method the partial remainder is not corrected. The divisor is shifted one decimal digit to the right, the next quotient digit determining loop is begun, by adding back the aligned divisor. The quotient digit is the number of additions made until the result goes positive. This procedure is based on the fact that the last subtraction that caused the remainder to go negative is the same as subtracting 10 times the divisor after the divisor is shifted.
One method used to shorten an iterative subtraction loop (the restoring division method) is by comparing the high-order digits of the partial remainder and the divisor before each successive subtraction. When the high-order digits are not equivalent the comparison definitively determines whether the next subtraction will result in a positive or negative partial remainder. By avoiding the subtraction which will result in a negative partial remainder the loop is ended early. For the infrequent case when the high-order digits are equivalent the subtraction is made and restoration is made if needed.
Another method adds a shifter to perform digit shift processing in parallel to iterative subtraction. While another decimal division methodology predicts the range of a quotient digit. The prediction, based on the high-order digits of the dividend and divisor, determines whether to use a restoring (normal iterative subtractions) or non-restoring division method (iterative additions to a complemented dividend) to find a quotient digit. The search for the quotient digit is divided approximately in half by chosing between the two methods.
Other methods of determining a quotient digit are based on using dedicated hardware that may add more area than desired to a processor execution unit. For example, in one case, a divider circuit is used to produce one quotient digit per divider cycle. However, dedicated hardware requires additional processor area. A software method uses multiples of a divisor created and stored in a table. The high-order digits of the dividend or partial remainder are used to select a quotient digit. Hardware implementation requires table and comparator area and requires the generation of the 9 multiples.